from django.db import models
from django import forms
from django.db.models import Q



choices_da_ne = (
	('1', u'DA'),
	('0', u'NE'),
)

q_nezak_tek = Q(zakljucena='0')
q_aktiv_pan = Q(aktiven='1')
q_aktiv_eki = Q(turnir__zakljucen='0')
q_valid_id = Q(id__gt=0)

class drustvo(models.Model):
	naziv = models.CharField(max_length=100, unique=True)
	kraj = models.CharField(max_length=100)

	def __unicode__(self):
		return self.naziv+", "+self.kraj

class pandolero(models.Model):
	choices_roka = (
		(u'L', u'Leva'),
		(u'D', u'Desna'),
	)
	choices_spol = (
		(u'M', u'Moski'),
		(u'Z', u'Zenski'),
	)

	ime = models.CharField(max_length=100, unique=True)
	drustvo = models.ForeignKey(drustvo,db_column='drustvo', default=1)
	roka = models.CharField(max_length=1, choices=choices_roka, default='D')
	spol = models.CharField(max_length=1, choices=choices_spol, default='M')
	

	def __unicode__(self):
		#return str(self.id)+": "+self.ime+", "+self.drustvo.naziv
		return str(self.id)+": "+self.ime

class ekipa(models.Model):
	ime = models.CharField(max_length=100, unique=True)
	kraj = models.CharField(max_length=100)

	def __unicode__(self):
		return self.ime+", "+self.kraj
	

class turnir(models.Model):
	choices_podlaga = (
		(u'A', u'Asfalt'),
		(u'T', u'Trava'),
		(u'P', u'Pesek'),
		(u'G', u'Gramoz'),
		(u'S', u'Sneg'),
		(u'L', u'Led'),
		(u'Z', u'Zemlja'),
		(u'U', u'Umetna masa'),
		(u'D', u'Drugo'),
	)
	kraj = models.CharField(max_length=100)
	datum = models.DateField()
	ime = models.CharField(max_length=100, unique=True)
	podlaga = models.CharField(max_length=3, choices=choices_podlaga,default='A')
	zakljucen = models.CharField(max_length=1, choices=choices_da_ne, default='0')
	
	
	def __unicode__(self):
		#z = 'NI ZAKLJUCEN'
		#if self.zakljucen == '1':
		#	z = 'ZAKLJUCEN'
		return str(self.datum)+" "+self.kraj+", "+self.ime

class registracija_ekipa(models.Model):

	ekipa = models.ForeignKey(ekipa,db_column='ekipa')
	turnir = models.ForeignKey(turnir,db_column='turnir',limit_choices_to = Q(zakljucen='0'))

	unique_together = ('turnir','ekipa')
	
	def __unicode__(self):
		return str(self.turnir)+" - "+str(self.ekipa)

	class Meta:
		unique_together = ('ekipa','turnir')

class registracija_pandolero(models.Model):

	registracija = models.ForeignKey(registracija_ekipa, db_column='registracija',limit_choices_to = Q(turnir__zakljucen='0'))
	pandolero = models.ForeignKey(pandolero, db_column='pandolero' )
	aktiven = models.CharField(max_length=1, choices=choices_da_ne, default='0', editable=False)

	class Meta:
		unique_together = ('registracija','pandolero')
	
	def __unicode__(self):
		a = 'NI AKTIVEN'
		if self.aktiven=='1':
			a = 'AKTIVEN'
		return a+" "+str(self.registracija)+ " - " + str(self.pandolero)

class tekma(models.Model):
	registracija1 = models.ForeignKey(registracija_ekipa, related_name='tekma_registracija1', db_column='registracija1', limit_choices_to = Q(turnir__zakljucen='0'))
	registracija2 = models.ForeignKey(registracija_ekipa, related_name='tekma_registracija2', db_column='registracija2', limit_choices_to = Q(turnir__zakljucen='0'))
	mazze1 = models.PositiveIntegerField()
	mazze2 = models.PositiveIntegerField()
	ura = models.TimeField();
	zakljucena = models.CharField(max_length=1, choices=choices_da_ne, default='0')

	def __unicode__(self):
		return str(self.zakljucena)+" "+str(self.registracija1.turnir.datum)+" "+ str(self.ura) +"   "+str(self.registracija1.ekipa) +" "+str(self.mazze1)+":"+str(self.mazze2)+" "+  str(self.registracija2.ekipa)


class turn(models.Model):
	choices_serva = (
		(u'N', u'Neveljavna'),
		(u'1', u'1. tretjina'),
		(u'2', u'2. tretjina'),
		(u'3', u'3. tretjina'),
		(u'O', u'Oljke'),
	)
	choices_akcija = (
		(u'0', u'NI_AKCIJE'),
		(u'I', u'Izbita baza'),
		(u'U', u'Ulovljen pandolo'),
		(u'P', u'Zahteval merjenje in IMEL prav'),
		(u'N', u'Zahteval merjenje in NI IMEL prav'),
	)

	
	tekma = models.ForeignKey(tekma, db_column='tekma', limit_choices_to = q_nezak_tek)
	napadalec = models.ForeignKey(registracija_pandolero, related_name='napadalec', db_column='napadalec', limit_choices_to=Q(q_aktiv_pan&q_valid_id))


	serva = models.CharField(max_length=1, choices=choices_serva)
	mazze = models.PositiveIntegerField()
	stfc = models.PositiveSmallIntegerField()

	akcija = models.CharField('Obrambna akcija', max_length=2, choices=choices_akcija, default='00')
	branilec = models.ForeignKey(registracija_pandolero, related_name='branilec',db_column='branilec', default=0, limit_choices_to=q_aktiv_pan)

	def __unicode__(self):
		return "("+str(self.id)+") "+str(self.napadalec.registracija.turnir.kraj)+" - "+str(self.tekma.registracija1.ekipa.ime)+" : "+str(self.tekma.registracija2.ekipa.ime)+" - "+str(self.napadalec.pandolero.ime)

class karton(models.Model):
	choices_barva = (
		(u'RMK', u'Rumeni karton'),
		(u'RDK', u'Rdeci karton'),
	)

	tekma = models.ForeignKey(tekma, db_column='tekma', limit_choices_to=q_nezak_tek)
	pandolero = models.ForeignKey(registracija_pandolero, db_column='pandolero', limit_choices_to=q_aktiv_pan)
	barva = models.CharField(max_length=3, choices=choices_barva)

	def __unicode__(self):
		return str(self.pandolero.registracija.turnir.datum)+ " - " + str(self.pandolero.pandolero.ime)+ " ("+str(self.barva)+")"


class uvrstitev(models.Model):
	choice_tocke = (
		(11, u'10+1'),
		(9, u'8+1'),
		(7, u'6+1'),
		(5, u'4+1'),
		(3, u'2+1'),
		(1, u'0+1'),
		(0, u'0')
	)
	registracija = models.ForeignKey(registracija_ekipa, db_column='registracija', unique=True, limit_choices_to=q_aktiv_eki)
	uvrstitev = models.PositiveSmallIntegerField()
	tocke = models.PositiveSmallIntegerField(choices=choice_tocke, default=3)

	class Meta:
		unique_together=('registracija','uvrstitev')

	def __unicode__(self):
		return str(self.registracija) + ": " + str(self.uvrstitev)+". mesto, " + str(self.tocke)+" tock." 

